﻿using System;
using System.Runtime.Serialization;

namespace DeGiglio.biz.Twitter.Classes
{

    [DataContract]
    public class TwitterResponse_AccessToken
    {
        [DataMember(Name = "access_token")]
        public string AccessToken { get; set; }
    }



    [DataContract]
    public class TwitterResponse_Tweet
    {
        [DataMember(Name = "created_at")]
        public string CreatedAt { get; set; }

        [DataMember(Name = "id_str")]
        public string Id { get; set; }

        [DataMember(Name = "text")]
        public string Text { get; set; }

        [DataMember(Name = "user")]
        public TwitterResponse_User User { get; set; }
    }

    [DataContract]
    public class TwitterResponse_User
    {
        [DataMember(Name = "id_str")]
        public string UserId { get; set; }

        [DataMember(Name = "screen_name")]
        public string ScreenName { get; set; }

        [DataMember(Name = "profile_image_url")]
        public string ProfileImageUrl { get; set; }

        [DataMember(Name = "profile_image_url_https")]
        public string ProfileImageUrlHttps { get; set; }
    }



    [DataContract]
    public class TwitterResponse_RateLimit
    {
        [DataMember(Name = "resources")]
        public TwitterResponse_Resources Resources { get; set; }
    }


    [DataContract]
    public class TwitterResponse_Resources
    {
        [DataMember(Name = "statuses")]
        public TwitterResponse_Statuses Statuses { get; set; }
    }

    [DataContract]
    public class TwitterResponse_Statuses
    {
        [DataMember(Name = "/statuses/show/:id")]
        public TwitterResponse_Limits Id { get; set; }

        [DataMember(Name = "/statuses/oembed")]
        public TwitterResponse_Limits OEmbed { get; set; }

        [DataMember(Name = "/statuses/user_timeline")]
        public TwitterResponse_Limits UserTimeLine { get; set; }

        [DataMember(Name = "/statuses/retweets/:id")]
        public TwitterResponse_Limits Retweets { get; set; }
    }

    [DataContract]
    public class TwitterResponse_Limits
    {
        [DataMember(Name = "limit")]
        public int Limit { get; set; }

        [DataMember(Name = "remaining")]
        public int Remaining { get; set; }

        [DataMember(Name = "reset")]
        public int Reset { get; set; }
    }




    [DataContract]
    public class Tweet
    {
        public Tweet() { }

        [DataMember]
        public string Id { get; set; }
        [DataMember]
        public DateTime CreatedAt { get; set; }
        [DataMember]
        public string DisplayTime { get; set; }
        [DataMember]
        public string Status { get; set; }
        [DataMember]
        public string UserName { get; set; }
        [DataMember]
        public string AvatarUrl { get; set; }

        [DataMember]
        public string RetweetUri { get; set; }
        [DataMember]
        public string ReplyUri { get; set; }
        [DataMember]
        public string FavoriteUri { get; set; }
        [DataMember]
        public string StatusUri { get; set; }
        [DataMember]
        public string UserUri { get; set; }
    }
}
